1997D - Maximize the Root - CodeForces Solution


binary search dfs and similar dp greedy trees

Please click on ads to support us..

Python Code:

def findval(vals,parents,childs,i,arr):
    l1 = [i]
    l2 = []
    while l1 != []:
        xx = l1.pop()
        l2.append(xx)
        for ii in childs[xx]:
            l1.append(ii)
    while l2 != []:
        xx = l2.pop()
        if childs[xx] == []:
            arr[xx] = vals[xx]
        else:
            minchildval = 1e9
            for j in childs[xx]:
                minchildval = min(minchildval,arr[j])
            if vals[xx] < minchildval:
                arr[xx] = (vals[xx]+minchildval)//2
            else:
                arr[xx] = minchildval
    return arr[i]

def findminvalfr(vals,parents,childs):
    x = 1e9
    arr = [-1 for i in range(len(vals))]
    for i in childs[0]:
        x = min(x,findval(vals,parents,childs,i,arr))
    return x

num = int(input())
out = []
for x in range(num):
    n = int(input())
    vals = [int(i) for i in input().split()]
    parents = [-1] + [int(i)-1 for i in input().split()]
    childs = []
    for i in range(n):
        childs.append([])
    for i in range(1,n):
        childs[parents[i]].append(i)
    if childs[0] == []:
        out.append(vals[0])
        continue
    minfr = findminvalfr(vals,parents,childs)
    out.append(vals[0]+minfr)

for i in out:
    print(int(i))


Comments

Submit
0 Comments
More Questions

973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST
445. Add Two Numbers II
442. Find All Duplicates in an Array
437. Path Sum III
436. Find Right Interval